odstraneni prehravani defaultniho zvuku Windows pri OnKeyDown udalosti

Otázka od: Martin Kozusky

21. 10. 2002 10:38

Ahoj,
nevite nekdo jak odstranit prehravani defatultniho zvuku windows, kdyz mam v
Editu v udalosti OnKeyDown napsane toto:

---
if key=vk_Return then b_answer.Click;
--

vzdy, kdyz potom v tom editu zmacknu enter, zahraje ten zvuk   nechci
vypinat zvuky windows, jde to odstranit nejak jinak?

Diky,
Martin

Odpovedá: ing. Jan Fiala

21. 10. 2002 10:53

         udalosti
21.10.2002 Martin Kozusky:
> Ahoj,
> nevite nekdo jak odstranit prehravani defatultniho zvuku windows, kdyz mam v
> Editu v udalosti OnKeyDown napsane toto:

> ---
> if key=vk_Return then b_answer.Click;
> --

if key=vk_Return then
begin
  b_answer.Click;
  Key := 0;
end;

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Ondrej Kelle

21. 10. 2002 11:34

         udalosti
> nevite nekdo jak odstranit prehravani defatultniho zvuku
> windows, kdyz mam v
> Editu v udalosti OnKeyDown napsane toto:
>
> ---
> if key=vk_Return then b_answer.Click;
> --
>
> vzdy, kdyz potom v tom editu zmacknu enter, zahraje ten zvuk
>   nechci
> vypinat zvuky windows, jde to odstranit nejak jinak?

Ahoj, najjednoduchsie to bude asi takto:

type
  TForm1 = class(TForm)
  private
    procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
  end;

implementation

procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
  with Message do
    if (CharCode = VK_RETURN) and (KeyDataToShiftState(KeyData) = []) and
(ActiveControl = Edit1) then
    begin
      with TMessage(Message) do
        Edit1.Perform(WM_KEYDOWN, WParam, LParam);
      Result := 1;
    end
    else
      inherited;
end;

HTH
TOndrej

Odpovedá: ing. Jan Fiala

21. 10. 2002 12:22

         udalosti
21.10.2002 Ondrej Kelle:
>> nevite nekdo jak odstranit prehravani defatultniho zvuku
>> windows, kdyz mam v
>> Editu v udalosti OnKeyDown napsane toto:
>>
>> vzdy, kdyz potom v tom editu zmacknu enter, zahraje ten zvuk
>>   nechci
>> vypinat zvuky windows, jde to odstranit nejak jinak?

> Ahoj, najjednoduchsie to bude asi takto:

> type
> TForm1 = class(TForm)
> private
> procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
> end;

> implementation

> procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
> begin
> with Message do
> if (CharCode = VK_RETURN) and (KeyDataToShiftState(KeyData) = []) and
> (ActiveControl = Edit1) then
> begin
> with TMessage(Message) do
> Edit1.Perform(WM_KEYDOWN, WParam, LParam);
> Result := 1;
> end
> else
> inherited;
> end;

To mi pripomina ten povestny clanek o reseni odeslani e-mailu na
od programatora po reditele na Unixu.
Tohle je tak na urovni vedouciho projektu  

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: Ondrej Kelle

21. 10. 2002 12:30

         udalosti
> To mi pripomina ten povestny clanek o reseni odeslani e-mailu na
> od programatora po reditele na Unixu.
> Tohle je tak na urovni vedouciho projektu  

Vdaka za uznanie, ale aspon to funguje, na rozdiel od Tvojho kodu  

Da sa to riesit aj inak, ale ako som pisal, tento sposob mi pripada
najjednoduchsi.

HTH
TOndrej

Odpovedá: Jiri Foldyna

21. 10. 2002 12:57

         udalosti
> > Ahoj,
> > nevite nekdo jak odstranit prehravani defatultniho zvuku
> windows, kdyz mam v
> > Editu v udalosti OnKeyDown napsane toto:
>
> > ---
> > if key=vk_Return then b_answer.Click;
> > --
>
> if key=vk_Return then
> begin
> b_answer.Click;
> Key := 0;
> end;

Ahoj,
tohle nestaci, je treba obslouzit podobne jeste OnKeyPress (tusim, ze Key :=
#0).

Jiri Foldyna
mailto:jiri.f@avizo.cz

Odpovedá: ing. Jan Fiala

21. 10. 2002 13:23

         udalosti
21.10.2002 Ondrej Kelle:
>> To mi pripomina ten povestny clanek o reseni odeslani e-mailu na
>> od programatora po reditele na Unixu.
>> Tohle je tak na urovni vedouciho projektu  

> Vdaka za uznanie, ale aspon to funguje, na rozdiel od Tvojho kodu  

Pokud jsem pochopil, jde mu o pipnuti po stisku Enter.

Moje chyba byla, ze jsem prehledl, ze je to v OnKeyDown.
Staci umistit kod do OnKeyPress a uz to fungovat bude.

  if Key = Chr(VK_RETURN) then
  begin
     Button1.Click;
     Key := #0;
  end;

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

Odpovedá: David Michal

21. 10. 2002 12:38

         udalosti
Zdravim,
Ten jeho kod funguje take.  
Jen je treba psat key := Char(0); a ne pouze key := 0;  
Preci jen mi tento radek prijde jednodusi. A pouzivam to take.
David

Vdaka za uznanie, ale aspon to funguje, na rozdiel od Tvojho kodu  

Da sa to riesit aj inak, ale ako som pisal, tento sposob mi pripada
najjednoduchsi.

HTH
TOndrej
---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.404 / Virus Database: 228 - Release Date: 15/10/2002

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.404 / Virus Database: 228 - Release Date: 15/10/2002

Odpovedá: Ondrej Kelle

21. 10. 2002 12:44

         udalosti
> Pokud jsem pochopil, jde mu o pipnuti po stisku Enter.
>
> Moje chyba byla, ze jsem prehledl, ze je to v OnKeyDown.
> Staci umistit kod do OnKeyPress a uz to fungovat bude.
>
> if Key = Chr(VK_RETURN) then
> begin
> Button1.Click;
> Key := #0;
> end;

Mas pravdu, tak je to jednoduchsie  
Hlboko otraseny davam vypoved a idem hladat nejaku menezersku poziciu. :-P
Ale vazne, bolo to poucne. Diky.

Prajem krasny den s Delphi...
TOndrej